﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using QLTV_V2.DataAccess;
using QLTV_V2.BussinessLogic;
using QLTV_V2.BussinessObject;

namespace QLTV_V2
{
    public partial class FrmXulyVP : DevComponents.DotNetBar.Office2007RibbonForm
    {
        ConnectData conn=new ConnectData();
        Utilities uti = new Utilities();
        BanDocBUS bdBUS=new BanDocBUS();
        private int kt;
        public string mabandoc, manv;
        public int dk;
        public FrmXulyVP()
        {
            InitializeComponent();
        }

        private void FrmXulyVP_Load(object sender, EventArgs e)
        {
           
            dgv_VP.DataSource=bdBUS.GetVipham("NgayLap");
            timer1.Enabled = true;
            btn_Luu.Enabled = false;
            btn_Huy.Enabled = false;
            group_PhieuVP.Enabled = false;
            group_BanDoc.Enabled = false;
            DateTime now = System.DateTime.Now;
            date_Tungay.Value = now;
            date_DenNgay.Value = now;
            if (dk == 1)
            {
                txt_MaBanDoc.Text = mabandoc;
                date_NgayVP.Value = System.DateTime.Now;
                txt_LydoVP.Text = "";
                richText_HHKhac.Text = "";
                kt = 1;
            }
                
        }
        //DataGridview
        private void dgv_VP_RowEnter(object sender, DataGridViewCellEventArgs e)
        {
            if (dk != 1)
            {
                try
                {
                    kt = 0;
                    int dong = e.RowIndex;
                    string sophieu=dgv_VP.Rows[dong].Cells["MaPhieuVP"].Value.ToString();
                    txt_MaphieuVP.Text = sophieu;
                    //txt_MaphieuVP.Text = sophieu;
                    txt_MaBanDoc.Text = dgv_VP.Rows[dong].Cells["MaBanDoc1"].Value.ToString();
                    date_NgayVP.Text = dgv_VP.Rows[dong].Cells["NgayLap"].Value.ToString();
                    txt_LydoVP.Text = dgv_VP.Rows[dong].Cells["LyDoVP"].Value.ToString();
                    int loaixl = Convert.ToInt32(dgv_VP.Rows[dong].Cells["LoaiXL"].Value);
                    if (loaixl == 1)
                        radio_Phattien.Checked = true;
                    else
                        if (loaixl == 2)
                            radio_Khoathe.Checked = true;
                        else
                            radio_HTKhac.Checked = true;
                    txt_XuLy.Visible = true;
                    txt_XuLy.Text = dgv_VP.Rows[dong].Cells["XuLy"].Value.ToString();
                }
                catch { }
            }
        }

        private void btn_Lapphieu_Click(object sender, EventArgs e)
        {
           kt=1;
           group_BanDoc.Enabled = true;
           txt_LydoVP.Text = "";
           txt_Sotien.Text = "";
           richText_HHKhac.Text = "";
           txt_MaBanDoc.Text = "";
           txt_Hoten.Text = "";
           txt_Donvi.Text = "";
           txt_XuLy.Visible = false;
           button(true);
        }
        void button(bool k)
        {
            btn_Luu.Enabled = k;
            btn_Huy.Enabled = k;
            btn_Lapphieu.Enabled =! k;
            btn_Suaphieu.Enabled = !k;
            btn_XoaPhieu.Enabled = !k;  
        }
        private void btn_Suaphieu_Click(object sender, EventArgs e)
        {
            kt = 2;
            group_BanDoc.Enabled = true;
            group_PhieuVP.Enabled = true;
            button(true);
        }

        private void btn_XoaPhieu_Click(object sender, EventArgs e)
        {
            if (MessageBox.Show("Bạn có muốn hủy bỏ phiếu vi phạm '" + txt_MaphieuVP.Text + "'?", "Hỏi",
                   MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
            {
                if (uti.deleteTable("PhieuVP", "MaPhieuVP", txt_MaphieuVP.Text) == true)
                {
                    if (bdBUS.updateTTThe(txt_MaBanDoc.Text, false) == true)
                    {
                        MessageBox.Show("Đã xóa","Thông báo");
                        FrmXulyVP_Load(sender, e);
                    }
                }
                else
                    MessageBox.Show("Không thể xóa");
            }

        }
        //Kiểm tra mã ban đọc
        private void btn_KiemTra_Click(object sender, EventArgs e)
        {
            if (txt_MaBanDoc.Text == "")
                MessageBox.Show("Chưa nhập mã bạn đọc");
            else
            {
                if (uti.CheckExitsValue("BanDoc", "MaBanDoc", txt_MaBanDoc.Text) == false)
                {
                    try
                    {
                        BanDoc bd = new BanDoc();
                        bd = bdBUS.GetBanDoc_Object(txt_MaBanDoc.Text);
                        txt_Hoten.Text = bd.TenBanDoc;
                        txt_Donvi.Text = bd.DiaChi;
                        date_NgayLapThe.Value = bd.NgayLapThe;
                        //Enabled group
                        group_PhieuVP.Enabled = true;
                        //Lay ma ke tiep
                        string lastID = uti.GetLastID("PhieuVP", "MaPhieuVP", "MaPhieuVP", "VP-0000");
                        string nextID = uti.GetNextID(lastID, "VP-");
                        txt_MaphieuVP.Text = nextID.ToUpper();
                        //Lay nagy giờ hệ thống hiện tại
                        timer1.Enabled = true;
                        DateTime now = System.DateTime.Now;
                        date_NgayVP.Value = now;
                        date_Tu.Value = now;
                        date_Den.Value = now;
                        radio_Khoathe.Checked = true;
                    }
                    catch
                    {
                        //MessageBox.Show("Không đúng");
                    }
                }
                else
                    MessageBox.Show("Mã thẻ không đúng!", "Thông báo");
            }
        }
        private void btn_Luu_Click(object sender, EventArgs e)
        {
            int temp=kt;
            if (kt == 1) //Thêm mới
            {
                ViPham vp = new ViPham();
                vp = GetViPham_Object();
                if (bdBUS.checkSaveVP(vp) == true)
                {
                    if (bdBUS.InserViPham(vp) == true)
                    {
                        if (vp.LoaiXL == 2)//Khóa thẻ
                        {
                            if (bdBUS.updateTTThe(txt_MaBanDoc.Text, true) == true)
                            {
                                if (MessageBox.Show("Bạn có muốn in phiếu không?", "Hỏi",
                          MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
                                {
                                    //Load in phiếu
                                    frmReportBanDoc frm = new frmReportBanDoc();
                                    frm.dtb_BanDoc = getDataTable_InPhieuVP();
                                    frm.dk = 2;
                                    frm.ShowDialog();
                                    button(false);
                                    FrmXulyVP_Load(sender, e);
                                }
                                else
                                {
                                    MessageBox.Show("Lưu thành công", "Thông báo");
                                    button(false);
                                    dgv_VP.DataSource = bdBUS.GetVipham("NgayLap");
                                }
                            }
                        }
                        else
                        {
                            if (bdBUS.updateTTThe(txt_MaBanDoc.Text, false) == true)
                            {
                                if (MessageBox.Show("Bạn có muốn in phiếu không?", "Hỏi",
                          MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
                                {
                                    //Load in phiếu
                                    frmReportBanDoc frm = new frmReportBanDoc();
                                    frm.dtb_BanDoc = getDataTable_InPhieuVP();
                                    frm.dk = 2;
                                    frm.ShowDialog();
                                    button(false);
                                    FrmXulyVP_Load(sender, e);
                                }
                                else
                                {
                                    MessageBox.Show("Lưu thành công", "Thông báo");
                                    button(false);
                                    dgv_VP.DataSource = bdBUS.GetVipham("NgayLap");
                                }
                            }
                        }
                    }
                    else
                        MessageBox.Show("Không thể lập phiểu");
                }
                else
                    kt=temp;
            }
            else //Sửa thông tin
            {
                ViPham vp = new ViPham();
                vp = GetViPham_Object();
                if (bdBUS.checkSaveVP(vp) == true)
                {
                    if (bdBUS.UpdateViPham(vp) == true)
                    {
                        if (vp.LoaiXL == 2)//Khóa thẻ
                        {
                            if (bdBUS.updateTTThe(txt_MaBanDoc.Text, true) == true)
                            {
                                if (MessageBox.Show("Bạn có muốn in phiếu không?", "Hỏi",
                          MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
                                {
                                    //Load in phiếu
                                    frmReportBanDoc frm = new frmReportBanDoc();
                                    frm.dtb_BanDoc = getDataTable_InPhieuVP();
                                    frm.dk = 2;
                                    frm.ShowDialog();
                                    button(false);
                                    FrmXulyVP_Load(sender, e);

                                }
                                else
                                {
                                    MessageBox.Show("Lưu thành công", "Thông báo");
                                    button(false);
                                    dgv_VP.DataSource = bdBUS.GetVipham("NgayLap");
                                }
                            }
                        }
                        else//Phạt tiền hoặc hình thức khác
                        {
                            if (bdBUS.updateTTThe(txt_MaBanDoc.Text, false) == true)
                            {
                                if (MessageBox.Show("Bạn có muốn in phiếu không?", "Hỏi",
                          MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
                                {
                                    //Load in phiếu
                                    frmReportBanDoc frm = new frmReportBanDoc();
                                    frm.dtb_BanDoc = getDataTable_InPhieuVP();
                                    frm.dk = 2;
                                    frm.ShowDialog();
                                    button(false);
                                    FrmXulyVP_Load(sender, e);

                                }
                                else
                                {
                                    MessageBox.Show("Lưu thành công!", "Thông báo");
                                    button(false);
                                    dgv_VP.DataSource = bdBUS.GetVipham("NgayLap");
                                }
                            }
                        }
                    }
                    else
                        MessageBox.Show("Không thể lưu", "Thông báo");
                }
                else
                    kt = temp;
            }
                
        }
        private void btn_Huy_Click(object sender, EventArgs e)
        {
            button(false);
            FrmXulyVP_Load(sender, e);
        }
        private void btn_Thoat_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        //Get datasource in phieeu vi pham
        public DataTable getDataTable_InPhieuVP()
        {
            DataTable dtb = new DataTable();
            string maphieuVP = txt_MaphieuVP.Text;
            string sql = "select MaPhieuVP, a.MaBanDoc, TenBanDoc,b.DiaChi,LyDoVP,XuLy, NgayLap, TenNV "+
                        "from PhieuVP a join BanDoc b on a.MaBanDoc=b.MaBanDoc "+
                        "join NhanVien c on a.MaNV=c.MaNV " +
                        "where MaPhieuVP=N'"+maphieuVP+"'";
            dtb = conn.GetDataTable(sql);
            return dtb;
        } 
        //Lấy TT truyền vào object ViPham
        private ViPham GetViPham_Object()
        {
            ViPham vp = new ViPham();
            vp.MaPhieuVP = txt_MaphieuVP.Text.ToUpper();
            vp.MaBanDoc = txt_MaBanDoc.Text.ToUpper();
            vp.LyDoVP = txt_LydoVP.Text;
            vp.XuLy = GetXuly();
            vp.NgayLap = date_NgayVP.Value;
            vp.MaNV = manv.ToUpper();
            if (radio_Phattien.Checked == true)
                vp.LoaiXL = 1;
            else
                if (radio_Khoathe.Checked == true)
                    vp.LoaiXL = 2;
                else
                    vp.LoaiXL = 3;
            return vp;
        }
        //Lấy hình thức xử lý vi phạm
        private string GetXuly()
        { 
            string xuly="";
            if (radio_Khoathe.Checked == true)
            {
                xuly = "Khóa thẻ từ " + date_Tu.Value.ToShortDateString() + " đến " + date_Den.Value.ToShortDateString();
               // loaivp = 1;
            }
            if (radio_Phattien.Checked == true)
                xuly = "Phạt tiền theo giá sách: " + txt_Sotien.Text + " vnd";
            if (radio_HTKhac.Checked == true)
                xuly = richText_HHKhac.Text;
            return xuly;
        }
        ////private void txt_MaBanDoc_TextChanged(object sender, EventArgs e)
        ////{
        ////    if (kt == 0)
        ////    {
        ////        try
        ////        {
        ////            BanDoc bd = new BanDoc();
        ////            bd = bdBUS.GetBanDoc_Object(txt_MaBanDoc.Text);
        ////            txt_Hoten.Text = bd.TenBanDoc;
        ////            txt_Donvi.Text = bd.DiaChi;
        ////            date_NgayLapThe.Value = bd.NgayLapThe;
        ////            //Enabled group
        ////            group_PhieuVP.Enabled = true;
        ////            //Lay ma ke tiep
        ////            string lastID = uti.GetLastID("PhieuVP", "MaPhieuVP", "MaPhieuVP", "VP-0000");
        ////            string nextID = uti.GetNextID(lastID, "VP-");
        ////            txt_MaphieuVP.Text = nextID;
        ////            //Lay nagy giờ hệ thống hiện tại
        ////            timer1.Enabled = true;
        ////            DateTime now = System.DateTime.Now;
        ////            date_NgayVP.Value = now;
        ////            date_Tu.Value = now;
        ////            date_Den.Value = now;
        ////        }
        ////        catch
        ////        {
        ////           // MessageBox.Show("Không đúng");
        ////        }
        ////    }
        ////} 
        private void dgv_VP_RowPostPaint(object sender, DataGridViewRowPostPaintEventArgs e)
        {
            uti.dgv_GetSTT_RowHeader(sender, e, dgv_VP);
        }

        private void txt_MaBanDoc_TextChanged(object sender, EventArgs e)
        {
            {
                if (kt == 0)
                {
                    try
                    {
                        BanDoc bd = new BanDoc();
                        bd = bdBUS.GetBanDoc_Object(txt_MaBanDoc.Text);
                        txt_Hoten.Text = bd.TenBanDoc;
                        txt_Donvi.Text = bd.DiaChi;
                        date_NgayLapThe.Value = bd.NgayLapThe;
                        //Enabled group
                        //group_PhieuVP.Enabled = true;
                        ////Lay ma ke tiep
                        //string lastID = uti.GetLastID("PhieuVP", "MaPhieuVP", "MaPhieuVP", "VP-0000");
                        //string nextID = uti.GetNextID(lastID, "VP-");
                        //txt_MaphieuVP.Text = nextID;
                        ////Lay nagy giờ hệ thống hiện tại
                        //timer1.Enabled = true;
                        //DateTime now = System.DateTime.Now;
                        //date_NgayVP.Value = now;
                        //date_Tu.Value = now;
                        //date_Den.Value = now;
                    }
                    catch
                    {
                        // MessageBox.Show("Không đúng");
                    }
                }
            }
        }


    }
}
